home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1997 August / Walnut Creek CDROM.7z / VOL_400 / 466_01 / SRC / DOCEXPR.H < prev    next >
Encoding:
C/C++ Source or Header  |  1996-12-20  |  1.2 KB  |  64 lines

  1. #ifndef DOCEXPR_H
  2. #define DOCEXPR_H
  3.  
  4. //@doc DOCEXPR TOKENBASE
  5.  
  6. //@class Base class for expression tokens.
  7. class CTokenBase  : public CObject
  8. {
  9. public:    
  10.     //@cmember Evaluate the token against a supplied text string.
  11.  
  12.     virtual int Eval(const char *szSrc)   { return TRUE; }
  13.  
  14.     //@cmember Set the token using a supplied textual token.
  15.  
  16.     virtual int Set(const char *szToken, const char *&szCont)  { return 0; }
  17. };
  18.  
  19.  
  20. //@doc DOCEXPR IDTOKEN
  21.  
  22. class CIDToken : public CTokenBase
  23. {
  24. public:
  25.     int Eval(const char *szSrc);
  26.     int Set(const char *szToken, const char *&szCont);
  27.  
  28. private:
  29.     CString m_sDocID;
  30. };
  31.  
  32.  
  33. //@doc DOCEXPR EXPRTOKEN
  34.  
  35. class CExprToken : public CTokenBase
  36. {
  37. private:
  38.     CTokenBase *m_pLeft;
  39.     CTokenBase *m_pRight;
  40.  
  41.     int m_nOp;
  42.     BOOL m_bCommasAsOr;
  43.  
  44.     enum ExprParseState { LOOK_OPERATOR, LOOK_ARGUMENT, };
  45.     enum ExprOps { NONE, OR, AND, };
  46.  
  47. public:
  48.     CExprToken(void);
  49.     CExprToken(CTokenBase *pLeft, CTokenBase *pRight, int nOp);
  50.     ~CExprToken(void);
  51.  
  52.     int Eval(const char *szSrc);
  53.     int Set(const char *szExpr, const char *&szResume);
  54.     int Set(void);
  55.  
  56.     void UseCommasAsOr(void) { m_bCommasAsOr = TRUE; }
  57.  
  58.  
  59. };
  60.  
  61.  
  62.  
  63. #endif
  64.